from rest_framework.views import exception_handler as drf_exception_handler
import logging
from django.db import DatabaseError
from redis.exceptions import RedisError
from rest_framework.response import Response
from rest_framework import status
# 获取在配置文件中定义的logger　用来记录日志
iogger=logging.getLogger('meiduo')
def exception_handler(exc,context):
    """"
    自定义异常处理
    exc:异常
    context: 抛出异常的上下文
    Reponse响应对象
    """
    # 调用drf框架原生的异常处理方法
    response=drf_exception_handler(exc,context)

    if response is None:
        view=context['view']
        if isinstance(exc,DatabaseError)or isinstance(exc,RecursionError):
            # 数据库异常
            logging.error('[%s]%s'%(view,exc))
            response=Response({'message':'服务器内部错误'})
        return response